home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.parser;
-
- import java.io.IOException;
- import java.io.Writer;
- import java.util.Vector;
-
- public class Util {
- public static boolean checkName(String var0) {
- if (var0.length() < 1) {
- return false;
- } else {
- label58: {
- char var1 = var0.charAt(0);
- boolean var10000;
- if (var1 < 65536 && var1 >= 0) {
- if ((2 & XMLChar.flags[var1]) != 0) {
- break label58;
- }
-
- var10000 = false;
- } else {
- var10000 = false;
- }
-
- if (!var10000 && var1 != '_' && var1 != ':') {
- return false;
- }
- }
-
- for(int var2 = 1; var2 < var0.length(); ++var2) {
- char var3 = var0.charAt(var2);
- boolean var4;
- if (var3 < 65536 && var3 >= 0) {
- if ((8 & XMLChar.flags[var3]) != 0) {
- continue;
- }
-
- var4 = false;
- } else {
- var4 = false;
- }
-
- if (!var4) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public static boolean checkNCName(String var0) {
- if (var0.length() < 1) {
- return false;
- } else {
- label60: {
- char var1 = var0.charAt(0);
- boolean var10000;
- if (var1 < 65536 && var1 >= 0) {
- if ((2 & XMLChar.flags[var1]) != 0) {
- break label60;
- }
-
- var10000 = false;
- } else {
- var10000 = false;
- }
-
- if (!var10000 && var1 != '_') {
- return false;
- }
- }
-
- int var2 = 1;
-
- while(true) {
- if (var2 >= var0.length()) {
- return true;
- }
-
- char var3 = var0.charAt(var2);
- if (var3 == ':') {
- break;
- }
-
- label61: {
- boolean var4;
- if (var3 < 65536 && var3 >= 0) {
- if ((8 & XMLChar.flags[var3]) != 0) {
- break label61;
- }
-
- var4 = false;
- } else {
- var4 = false;
- }
-
- if (!var4) {
- break;
- }
- }
-
- ++var2;
- }
-
- return false;
- }
- }
-
- public static boolean checkNmtoken(String var0) {
- if (var0.length() < 1) {
- return false;
- } else {
- for(int var1 = 0; var1 < var0.length(); ++var1) {
- char var2 = var0.charAt(var1);
- boolean var10000;
- if (var2 < 65536 && var2 >= 0) {
- if ((8 & XMLChar.flags[var2]) != 0) {
- continue;
- }
-
- var10000 = false;
- } else {
- var10000 = false;
- }
-
- if (!var10000) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public static boolean checkAllSpace(String var0) {
- for(int var1 = 0; var1 < var0.length(); ++var1) {
- char var2 = var0.charAt(var1);
- if (var2 < 0 || var2 >= 128 || (4 & XMLChar.flags[var2]) == 0 && true) {
- return false;
- }
- }
-
- return true;
- }
-
- public static boolean checkEncoding(String var0) {
- if (var0.length() < 1) {
- return false;
- } else if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(var0.charAt(0)) < 0) {
- return false;
- } else {
- for(int var1 = 1; var1 < var0.length(); ++var1) {
- if ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._-".indexOf(var0.charAt(var1)) < 0) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public static boolean checkLanguageID(String var0) {
- int var1 = var0.length();
- if (var1 < 2) {
- return false;
- } else {
- char var2 = var0.charAt(0);
- char var3 = var0.charAt(1);
- int var4 = 2;
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') || (var3 < 'a' || var3 > 'z') && (var3 < 'A' || var3 > 'Z')) {
- if (var3 != '-' || var2 != 'i' && var2 != 'I' && var2 != 'x' && var2 != 'X' || var1 < 3) {
- return false;
- }
-
- var2 = var0.charAt(var4++);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
- return false;
- }
-
- while(var4 < var1) {
- var2 = var0.charAt(var4);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
- break;
- }
-
- ++var4;
- }
- }
-
- while(var4 < var1) {
- if (var4 + 2 > var1) {
- return false;
- }
-
- if (var0.charAt(var4++) != '-') {
- return false;
- }
-
- var2 = var0.charAt(var4++);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
- return false;
- }
-
- while(var4 < var1) {
- var2 = var0.charAt(var4);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
- break;
- }
-
- ++var4;
- }
- }
-
- return true;
- }
- }
-
- public static boolean checkVersionNum(String var0) {
- if (var0.length() < 1) {
- return false;
- } else {
- for(int var1 = 0; var1 < var0.length(); ++var1) {
- char var2 = var0.charAt(var1);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') && (var2 < '0' || var2 > '9') && "_.:-".indexOf(var2) < 0) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public static int getInvalidURIChar(String var0) {
- for(int var1 = 0; var1 < var0.length(); ++var1) {
- char var2 = var0.charAt(var1);
- if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') && (var2 < '0' || var2 > '9') && ";/?:@&=+$,-_.!~*'()%".indexOf(var2) < 0) {
- return var1;
- }
- }
-
- return -1;
- }
-
- public static boolean isURN(String var0) {
- return var0.length() > 4 && var0.substring(0, 4).equalsIgnoreCase("urn:");
- }
-
- public static String normalizeURN(String var0) {
- boolean var1 = true;
-
- for(int var2 = 0; var2 < var0.length(); ++var2) {
- char var3 = var0.charAt(var2);
- if (var3 >= 'A' && var3 <= 'Z') {
- var1 = false;
- }
-
- if (var2 >= 4 && var3 == ':') {
- if (var1) {
- return var0;
- }
-
- return var0.substring(0, var2).toLowerCase() + var0.substring(var2);
- }
- }
-
- return var0;
- }
-
- public static String backReference(String var0, String var1) {
- StringBuffer var2 = new StringBuffer(var0.length() * 12 / 10);
-
- for(int var3 = 0; var3 < var0.length(); ++var3) {
- char var4 = var0.charAt(var3);
- if (var4 == '<') {
- var2.append("<");
- } else if (var4 == '>') {
- var2.append(">");
- } else if (var4 == '&') {
- var2.append("&");
- } else if (var4 >= '\ud800' && var4 < '\udc00') {
- if (var3 + 1 >= var0.length()) {
- throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var4) + " ?");
- }
-
- ++var3;
- int var5 = var0.charAt(var3);
- if (var5 < 56320 || var5 >= 57344) {
- throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var4) + " " + Integer.toHexString(var5));
- }
-
- var5 = (var4 - '\ud800' << 10) + var5 - '\udc00' + 65536;
- var2.append("");
- var2.append(Integer.toHexString(var5));
- var2.append(";");
- } else {
- var2.append(var4);
- }
- }
-
- return var2.toString();
- }
-
- public static String backReferenceForEntity(String var0, String var1) {
- return backReference(var0, "&\"'%\r\n\t", var1);
- }
-
- public static String backReference(String var0, String var1, String var2) {
- StringBuffer var3 = new StringBuffer(var0.length() * 12 / 10);
-
- for(int var4 = 0; var4 < var0.length(); ++var4) {
- char var5 = var0.charAt(var4);
- int var6 = var1.indexOf(var5);
- if (var6 >= 0) {
- var3.append("");
- var3.append(Integer.toString(var5));
- var3.append(";");
- } else if (var5 >= '\ud800' && var5 < '\udc00') {
- if (var4 + 1 >= var0.length()) {
- throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var5) + " ?");
- }
-
- ++var4;
- int var7 = var0.charAt(var4);
- if (var7 < 56320 || var7 >= 57344) {
- throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var5) + " " + Integer.toHexString(var7));
- }
-
- var7 = (var5 - '\ud800' << 10) + var7 - '\udc00' + 65536;
- var3.append("");
- var3.append(Integer.toHexString(var7));
- var3.append(";");
- } else {
- var3.append(var5);
- }
- }
-
- return var3.toString();
- }
-
- public static void printSpace(Writer var0, int var1) throws IOException {
- for(int var2 = 0; var2 < var1; ++var2) {
- var0.write(" ");
- }
-
- }
-
- public static void indent(Writer var0, int var1) throws IOException {
- var0.write("\n");
- printSpace(var0, var1);
- }
-
- public static Vector sortStringVector(Vector var0) {
- String[] var1 = new String[var0.size()];
- var0.copyInto(var1);
- heapSort(var1, var1.length);
- var0.removeAllElements();
- var0.ensureCapacity(var1.length);
-
- for(int var2 = 0; var2 < var1.length; ++var2) {
- var0.addElement(var1[var2]);
- }
-
- return var0;
- }
-
- public static void heapSort(String[] var0) {
- heapSort(var0, var0.length);
- }
-
- public static void heapSort(String[] var0, int var1) {
- for(int var2 = var1 / 2; var2 >= 0; --var2) {
- fall(var0, var1, var2);
- }
-
- for(int var4 = var1 - 1; var4 > 0; --var4) {
- String var3 = var0[0];
- var0[0] = var0[var4];
- var0[var4] = var3;
- fall(var0, var4, 0);
- }
-
- }
-
- private static void fall(String[] var0, int var1, int var2) {
- int var3 = 2 * var2 + 1;
- if (var3 < var1) {
- if (var3 + 1 < var1 && var0[var3].compareTo(var0[var3 + 1]) < 0) {
- var3 = 2 * var2 + 2;
- }
-
- if (var0[var2].compareTo(var0[var3]) < 0) {
- String var4 = var0[var2];
- var0[var2] = var0[var3];
- var0[var3] = var4;
- fall(var0, var1, var3);
- }
- }
-
- }
- }
-